﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Project.Models;
using System.Data.SqlClient;
using System.Data;
using Project.Models.Entity_Propiedades;

namespace Project.Controllers
{
    public class PropiedadesController : Controller
    {
        Utilidades util;
        String[] StringAValidar;
        //
        // GET: /Propiedades/


        public ActionResult index() {

         
            List<SelectListItem> lista = new List<SelectListItem>();
            lista.Add(new SelectListItem { Text = "salsa", Value = "salsa", Selected = true });
            lista.Add(new SelectListItem { Text = "merengue", Value = "merengue", Selected = true });
            lista.Add(new SelectListItem { Text = "balada", Value = "balada", Selected = true });
             
            ViewData["listato"] = lista;

            return View();
        
        }
        [HttpPost]
        public ActionResult index(fichaModelo model) {

            string n = Request.Form["nombre"];

                 
            
            
          

            return View(n);
        
        }
  
        public ActionResult AgregarContactos()
        {
            if (Session["id"] != null)
            {
                //lista es para mostrar la listas contactos que posee
                contacto cont = new contacto();
                List<contacto> lista = cont.getcontatos(Convert.ToInt32(Session["id"]));

                ViewData["listt"] = lista;

                return View();
            }
            else {

                return RedirectToAction("LogIn", "Cuentas");
            }
        }
   
        [HttpPost]
        public ActionResult AgregarContactos(contacto model)
         {
             if (Session["id"] != null)//Para proivir el acceso a usuario no registrado
             {
                 contacto cont = new contacto();
                 if (ModelState.IsValid)
                 {

                     util = new Utilidades();
                     //Validar si teine caractes no Deseado
                     if (util.ValidarCadenaString(StringAValidar = new string[] { model.nombre, model.celular, model.email, model.direccion, model.telefono, model.fax, model.company }))
                     {
                         ModelState.AddModelError("", "Los datos introducido Poseen Caracteres no Deseado.");
                     }
                     else
                     {
                         Conexion con=new Conexion();

                         string resultado = con.DBGuardarContato(model, Convert.ToInt32(Session["id"]));
                         if (resultado != "Registro Guardado Satisfactoriamente")
                         {
                             ModelState.AddModelError("", resultado);
                         }
                         else
                         {
                             // Todo bien  Ir a la siguiente pagina


                         }


                     }




                 }
                 List<contacto> lista = cont.getcontatos(Convert.ToInt32(Session["id"]));

                 ViewData["listt"] = lista;


                 return View();
             }
             else {
                 return RedirectToAction("LogIn", "Cuentas");
             }
        }
        [HttpGet]
        public ActionResult EditContacto(int id) {
            contacto cont = new contacto();
           var n= cont.getcontato(id,Convert.ToInt32(Session["id"]));
           if (n != null) {
               return View(n);
             
           }
           else
           {
               return RedirectToAction("Error", "Propiedades");
           }
        }
        public ActionResult Error()
        {

            return View();
        }

        public ActionResult prueba() {


            return View();
        }

        public ActionResult TipoPropiedad() {

            //Obtener listado de categorias
            //Obtener lista de contactos por Arrendador
            ViewData["categorias"] = new Categoria().GetCategorias();
            contacto cont = new contacto();
            List<contacto> lista = cont.getcontatos(Convert.ToInt32(Session["id"]));
            ViewData["listt"] = lista;
            return View();
        }
        [HttpPost]
        public ActionResult TipoPropiedad(contacto model)
        {

            Session["categoriaID"] = Request["categoria"];
            Session["contactoventa"] = Request["contactoventa"];
            Session["contactoalquiler"] = Request["contactoalquiler"];
            return RedirectToAction("AgregarInmueble", "Propiedades"); ;
        }
        public ActionResult AgregarInmueble()
        {
            return View(new Categoria().GetCategoriaById(Convert.ToInt32(Session["categoriaID"])).categoria);
        }
        [HttpPost]
        public ActionResult AgregarApartamento(Apartamentos model)
        {
            //Obtener provincias
            SqlDataReader provincias = new Conexion().getSqlDataReader("select * from Provincias");
            ViewBag.provincias = provincias;
            Session["Inmueble"] = model;
           // return View("DetallesPropiedad");
            return View("Direccion");
        }
        [HttpPost]
        public ActionResult AgregarCasa(Casas model)
        {
            SqlDataReader provincias = new Conexion().getSqlDataReader("select * from Provincias");
            ViewBag.provincias = provincias;
            Session["Inmueble"] = model;
            return View("DetallesPropiedad");
        }
        [HttpPost]
        public ActionResult AgregarSolar(Solares model)
        {
            SqlDataReader provincias = new Conexion().getSqlDataReader("select * from Provincias");
            ViewBag.provincias = provincias;
            Session["Inmueble"] = model;
            return View("DetallesPropiedad");
        }
        public ActionResult Municipios(string id) 
        {
            SqlDataReader municipios = new Conexion().getSqlDataReader(String.Format("select * from Municipios where Id_Provincia='{0}' order by nombre", id));
            ViewBag.municipios = municipios;
            return View();
        }
        
        public string Sector(string id)
        {
            try
            {
                SqlDataReader sectores = new Conexion().getSqlDataReader(String.Format("select * from Sectores where Id_Municipio='{0}' order by nombre", id));
              
           List<string> lista=new List<string>();
                while (sectores.Read())
                {
                    lista.Add(Convert.ToString(sectores["Nombre"]));
                 //   Listsectores[i] = Convert.ToString(sectores["Nombre"]);
                    
                }
                if (lista.Count != 0)
                {
                    string resul = Utilidades.CreateJsonArray(lista);
                    return resul;
                }
                else
                {
                    return null;
                }
            }catch(SqlException e){
            
            return null;
            }catch(Exception ee){
            return null;
            }
        }
        [HttpPost]
        public ActionResult AgregadoInmueble() 
        {
            //Datos a agregar
            //Categoria y contactos
            int categoriaid = Convert.ToInt32(Session["categoriaID"]);
            int contactoventa = Convert.ToInt32(Session["contactoventa"]);
            int contactoalquiler= Convert.ToInt32(Session["contactoalquiler"]);
            string categoria = new Categoria().GetCategoriaById(categoriaid).categoria;
            if (categoria == "Apartamento") 
            {
                Apartamentos apartamento = (Apartamentos)Session["Inmueble"];
                apartamento.propiedades.Categoria = categoriaid;
                apartamento.propiedades.ContactoVenta = contactoventa;
                apartamento.propiedades.ContactoAlquiler = contactoalquiler;
                apartamento.propiedades.arrendador = Convert.ToInt32(Session["id"]);
                apartamento.GuardarNuevo();
                ViewBag.idPropiedad = apartamento.propiedades.Id_Propiedad;
                //Almacenar Detalles y direccion
                Conexion con = new Conexion();
                con.DetalleVenta(apartamento.propiedades.Id_Propiedad, Request["tipomonedaventa"], Request["Valor"]);
                con.DetalleAlquiler(apartamento.propiedades.Id_Propiedad, Request["tipomonedaalquiler"], Request["tipopago"], Convert.ToDouble(Request["monto"]), Convert.ToInt32(Request["depositos"]));
                con.AgregarDireccion(apartamento.propiedades.Id_Propiedad, Convert.ToInt32(Request["sector"]), 0, 0, Request["direccion"]);
            }
            else if (categoria == "Casa")
            {
                Casas casa = (Casas)Session["Inmueble"];
                casa.propiedades.Categoria = categoriaid;
                casa.propiedades.ContactoVenta = contactoventa;
                casa.propiedades.ContactoAlquiler = contactoalquiler;
                casa.propiedades.arrendador = Convert.ToInt32(Session["id"]);
                casa.GuardarNuevo();
                ViewBag.idPropiedad = casa.propiedades.Id_Propiedad;
                //Almacenar Detalles y direccion
                Conexion con = new Conexion();
                con.DetalleVenta(casa.propiedades.Id_Propiedad, Request["tipomonedaventa"], Request["Valor"]);
                con.DetalleAlquiler(casa.propiedades.Id_Propiedad, Request["tipomonedaalquiler"], Request["tipopago"], Convert.ToDouble(Request["monto"]), Convert.ToInt32(Request["depositos"]));
                con.AgregarDireccion(casa.propiedades.Id_Propiedad, Convert.ToInt32(Request["sector"]), 0, 0, Request["direccion"]);
            }
            else if (categoria == "Solar") 
            {
                Solares solar = (Solares)Session["Inmueble"];
                solar.propiedades.Categoria = categoriaid;
                solar.propiedades.ContactoVenta = contactoventa;
                solar.propiedades.ContactoAlquiler = contactoalquiler;
                solar.propiedades.arrendador = Convert.ToInt32(Session["id"]);
                solar.GuardarNuevo();
                ViewBag.idPropiedad = solar.propiedades.Id_Propiedad;
                //Almacenar Detalles y direccion
                Conexion con = new Conexion();
                con.DetalleVenta(solar.propiedades.Id_Propiedad, Request["tipomonedaventa"], Request["Valor"]);
                con.DetalleAlquiler(solar.propiedades.Id_Propiedad, Request["tipomonedaalquiler"], Request["tipopago"], Convert.ToDouble(Request["monto"]), Convert.ToInt32(Request["depositos"]));
                con.AgregarDireccion(solar.propiedades.Id_Propiedad, Convert.ToInt32(Request["sector"]), 0, 0, Request["direccion"]);
            
            }
            return View();
        }
        public ActionResult AgregarImagenes(string id) 
        {
            ViewBag.idPropiedad = id;
            return View();
        }
        [HttpPost]
        public ActionResult AgregarImagenes(HttpPostedFileBase[] imagenes)
        {
            Conexion con = new Conexion();
            if (!System.IO.Directory.Exists(String.Format(@"{0}{1}", System.Configuration.ConfigurationManager.AppSettings["uploadimages"],Session["id"].ToString()))) 
            {
                System.IO.Directory.CreateDirectory(String.Format(@"{0}{1}", System.Configuration.ConfigurationManager.AppSettings["uploadimages"],Session["id"].ToString()));
            }
            foreach(HttpPostedFileBase ima in imagenes){
                ima.SaveAs(String.Format(@"{0}{1}\{2}", System.Configuration.ConfigurationManager.AppSettings["uploadimages"], Session["id"].ToString(), ima.FileName));
                con.GuardarImagen(Convert.ToInt32(Request["idPropiedad"]), String.Format(@"{0}\{1}", Session["id"].ToString(), ima.FileName));
            }
            return View();
        }
    }
}
